Distributed computing systems have substantially increased our ability to solve complex problems. Today's fastest supercomputers typically use thousands, or even tens of thousands of processors. These processors may all be located in a single room or area. Alternatively, relatively inexpensive super computers have been formed using distributed desktop computers located across the world, and connected only by the network. Programs created to run on the distributed systems take into account the amount of time it takes for communication between the devices. Performance optimization and debugging can be used to significantly improve the system's speed.
Debugging software programs that are designed to operate in a distributed computing system have enormous difficulties. Identifying problems that reduce performance of the software in the distributed system can be daunting due to the many processors and paths that can operate nearly simultaneously in real time. The number of possible causes of potential bugs can be relatively large.
Precise and accurate timestamps can be valuable to performance debugging. Accurate timestamps enable inter-node timing to be determined. For example, measuring inter-node message delay between computing devices, such as servers or central processing units, to determine if a program is experiencing queuing delay is only possible if the timestamps on both the sending device and receiving device are relatively precise, accurate, and synchronized. The use of local timestamps is typically inadequate. Even when the distributed computing environment is using running Network Time Protocol (NTP), the computing devices can have clock skews of on the order of one to two milliseconds, while the latency on an Ethernet Local Area Network (LAN) may be only fifty microseconds, for example.
Moreover, clock skews can change over time in a highly irregular and unpredictable manner. The inability to know how clock skews change between the computing devices in a distributed computing system reduces the overall ability to optimize the performance of software on the distributed computing system.
Reference will now be made to the exemplary embodiments illustrated, and specific language will be used herein to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended.